Contents
前言
這個課程全名叫做: Machine Learning and having it deep and structured
是由 李宏毅 教授所講授。
網址: http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLSD15_2.html
本來預定是看完 機器學習基石 後再來看這個的,但時間上不准許,只好先來著手學習 Deep Learning 的部分。先暫時擱置基石課程,希望在理解上不要有太大問題,而這課程是指導教授所推薦,如果後續有諸多障礙,就只好…只好…QQ
因為基礎不夠紮實,所以名詞使用上可能不是那麼精準,有錯還請告知~
而這次記下的東西或許會比較 零散且不完整,雖然說學習無捷徑,但還是希望專題能快速上軌道,所以可能只會挑一些個人覺得重要的地方記下。
此課程的筆記內容主要取自於 網路 和 李宏毅教授的投影片,而影片也是在其個人網頁內。不得不說,將影片內容以每頁投影片來區隔,在找內容時方便許多!
What is Machine Learning, Deep Learning and Structured Learning?
Deep Learning
學習的架構:
之前的 筆記 有比較詳細的說明。
Deep Learning 是?
像一個 生產線,我們從 hypothesis set (model) 中挑選出 functions,並把這些較簡單的 functions 串接 在一起成一個較為複雜的 function。
另外一個特色是,Deep learning 是 End-to-end training ,大致上就是在訓練過程中的每一個 stage 要做甚麼事,不是由人來定義的,而是由機器。
這邊來跟不是 Deep 做個比較(Shallow: 淺)
hand-crafted: 我們的知識推導出來的步驟
learned from data: 電腦從資料中學習
Shallow:
綠色格子的是 hand-crafted,藍色則是 learned from data。
Deep:
要做的事情從 data 中決定。第一個 function 的結果給進第二個 function 做進一步的計算,一層一層下去。
而一般來說,Deep Learning 常用來實作的方法以 Neural Network 為主。(仍有其他的)
Deep Learning:
是 機器學習 拉出的分支,它試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。
至今已有數種深度學習框架,如深度神經網路、卷積神經網路和深度信念網路和遞迴神經網路已被應用電腦視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並取得了極好的效果。 - 維基百科
Neural Network
在 Neural Network 中,每一個 neuron(神經元) 就代表了一個 function。
它的 input 是一個 vector,output 出一個 scalar ,而其過程如下:
將 vector 中每個 dimension 乘上 weight ,相加起來後再加上 bias ,最後通過 Activation function 產生出 output。
neural network 可以把一個 N dimension 的 vector 對應到一個 M dimension 的 vector。
把很多個 neuron 排成一排,就成了一個 Layer。每個 neuron 的 weight 不一樣,然後會各自產生出一個值,再把這些值當作下一個 Layer 的 input,直到最後一層,它會得到一個 M 維的 vector。
這邊可以想像每個 Layer 就是先前所講生產線中一個簡單的 function。
而這邊名稱上最後一層叫 Output Layer,其餘的叫 Hidden Layer。
Why Deeper is Better
Deep Neural Network 只是比較多層、參數多嗎?
這邊提到一個理論,任何連續的 function ,它都可以用一層 Layer 的 network 來做出來,只需要給予足夠 寬 的 hidden neurons。
這樣為何不是使用這種 fat network?
Fat + Short => Shallow
thin + tall => Deep
在 同樣 參數量時,誰表現較好?
舉例:
這邊同一 row 的參數量相同時,deep learning 的表現會比較好。至於原理嘛…暫且不管惹。
幾個結論:
有一些 function 它用 deep structure 會較容易表現,而這些 functions 可能比較容易拆解成幾個步驟。例如:人臉辨識,先看有沒有眼睛,再看其他部位,最後判斷有沒有一張臉。
在 Shallow structure 需要 比較多的參數 來表現這些 function,也就代表了需要 比較多 的 training data。
要達到 同樣 的表現,deep learning 需要 較少 的 data 。
在資料量 同樣 時,deep learning 表現得 較好。
Structured Learning
上面所講的 input,output 皆是一個 Vector。那如果今天的 input,output 是 Sequence,graph structure,tree structure 等等,就會用到所謂 Structured Learning 。
跟 Deep Learning 不同的是,Deep Learning 是一種方法。而 Structured Learning 比較算是一種類型,它有很多種方法來解決。
這邊有舉很多例子:
- 翻譯,輸入輸出都是 Sequence
- 語音辨識,也都是 Sequence
- 物件辨識(影像中),Input 是 image,Output 是個 Box。